<?php

/**
 * Список результатов.
 *
 */
class Results_Backend_Statistic_List extends Backend_Component_List
{
    
    /**
     * Описание первичного ключа таблицы.
     *
     * @var mixed
     */
    protected $_key = 'id';
    
    /**
     * Количество записей, выводимых на странице.
     *
     * @var integer
     */
    protected $_per_page = 20;

    /**
     * Наименования колонок списка.
     *
     * @var array
     */
    protected $_columns = array('date', 'name');
    
    /**
     * Наименование поля, по которому нужно упорядочивать записи.
     *
     * @var string
     */
    protected $_order = 'date';
    
    /**
     * Массив наименований полей списка, для которых порядок вывода записей
     * по умолчанию — обратный.
     *
     * @var array
     */
    protected $_reverse = array('date');
    
    
    /**
     * Формирует запрос выборки записей страницы.
     *
     * @return  string
     */
    protected function _getQueryBody()
    {
        $query = 'SELECT SQL_CALC_FOUND_ROWS
                         DISTINCT `u_u`.`id`, 
                         `u_u`.`name`, 
                         DATE_FORMAT(`u_u`.`date`, "%d.%m.%Y") AS `date`
                    FROM
                         `user_answers` `u_a`
              INNER JOIN 
                         `user_user` `u_u` 
                      ON 
                         `u_u`.`id` = `u_a`.`user_id`
                         ' . $this->_getOrder();
        return $query;
    }
        
}


/*SELECT SQL_CALC_FOUND_ROWS
                         DISTINCT `u_u`.`id`, 
                         DATE_FORMAT(`u_u`.`date`, "%d.%m.%Y") AS `date`, 
                         `u_u`.`name`, 
                         COUNT(`u_a`.`answer_id`) AS `user_answers`, 
                         COUNT(`t_a_right`.`id`) AS `right_answers`,  
                         COUNT(`t_a_wrong`.`id`) AS `wrong_answers`, 
                         COUNT(`x_all`.`all`)
                         -- COUNT(`t_a_all`.`all`) AS `all_answers`
                    FROM
                         `user_answers` `u_a`
              INNER JOIN 
                         `user_user` `u_u` 
                      ON 
                         `u_u`.`id` = `u_a`.`user_id`
               -- кол-во Правильных ответов
               LEFT JOIN 
                         (SELECT `id` FROM `tests_answers` WHERE `right` = 1 GROUP BY `id`) `t_a_right`
                      ON 
                         `t_a_right`.`id` = `u_a`.`answer_id`
               -- кол-во НЕправильных ответов
               LEFT JOIN 
                         (SELECT `id` FROM `tests_answers` WHERE `right` = 0 GROUP BY `id`) `t_a_wrong`
                      ON 
                         `t_a_wrong`.`id` = `u_a`.`answer_id` 
               LEFT JOIN 
                         `x_answers_by_question` `x_all` 
                      ON 
                         `x_all`.`question_id` = `u_a`.`question_id`
                GROUP BY 
                         `u_u`.`id`*/